import { BasicColumn, FormSchema } from '@/components/Table'
import { getDictListByCode } from '@/api/sys/dict'
import { h } from 'vue'
import { Tag } from 'ant-design-vue'
import dayjs from 'dayjs'

// 搜索表单配置（仅显示能源类型和起止时间）
export const searchFormSchema: FormSchema[] = [
  {
    field: 'dataTypeId',
    label: '能源类型',
    component: 'ApiSelect',
    defaultValue: '1770381347331145728',
    colProps: { span: 6 },
    componentProps: {
      api: getDictListByCode,
      params: 'energy_type',
      labelField: 'itemName',
      valueField: 'itemCode',
      disabled: true, // 保持不可修改状态
    },
  },
  {
    field: 'date',
    component: 'RangePicker',
    colProps: { span: 6 },
    componentProps: {
      placeholder: ['开始时间', '结束时间'],
      disabledDate: (current) => {
        return current && current > dayjs().endOf('day')
      },
    },
  },
  // 隐藏但提交时需要传递的字段（通过设置show: false）
  {
    field: 'singlePrice',
    show: false, // 隐藏字段
  },
  {
    field: 'description',
    show: false, // 隐藏字段
  },
]

// 表格列配置（仅显示指定字段）
export const columns: BasicColumn[] = [
  {
    title: '名称',
    dataIndex: 'name',
  },
  {
    title: '能源类型',
    dataIndex: 'dataTypeName',
  },
  {
    title: '开始日期',
    dataIndex: 'startDate',
    customRender: ({ text }) => dayjs(text).format('YYYY-MM-DD'),
  },
  {
    title: '结束日期',
    dataIndex: 'endDate',
    customRender: ({ text }) => dayjs(text).format('YYYY-MM-DD'),
  },
  {
    title: '固定价格',
    dataIndex: 'singlePrice',
    width: 140,
    customRender: '单一价格',
  },
  {
    title: '描述',
    dataIndex: 'description',
  },
  // 隐藏但需要传递的列（实际开发中可根据需求决定是否保留）
  {
    title: '计价方式',
    dataIndex: 'type',
    customRender: ({ text }) => '1',
    show: false, // 隐藏列
  },
  {
    title: '计价周期',
    dataIndex: 'period',
    customRender:  'DEFAULT',
    show: false, // 隐藏列
  },
  {
    title: '更新时间',
    dataIndex: 'updateTime',
    show: false, // 隐藏列
  },
]

// 添加记录表单配置（仅显示指定字段）
export const addRecordFormSchema: FormSchema[] = [
  {
    field: 'name',
    show: false, // 隐藏字段
    defaultValue: '', // 设置默认值确保提交时有值
  },
  {
    field: 'dataTypeId',
    label: '能源类型',
    component: 'ApiSelect',
    rules: [{ required: true }],
    componentProps: {
      api: getDictListByCode,
      params: 'energy_type',
      labelField: 'itemName',
      valueField: 'itemCode',
      disabled: true, // 保持不可修改状态
    },
  },
  {
    field: 'date',
    label: '起止时间',
    component: 'RangePicker',
    rules: [{ required: true }],
  },
  {
    field: 'singlePrice',
    label: '固定价格',
    component: 'InputNumber',
    rules: [{ required: true }],
  },
  {
    field: 'description',
    label: '描述',
    component: 'InputTextArea',
    componentProps: {
      placeholder: '请输入',
      autoSize: { minRows: 2, maxRows: 3 },
    },
  },
  // 隐藏但提交时需要传递的字段（通过设置show: false）
  {
    field: 'type',
    show: false, // 隐藏字段
    defaultValue: 1, // 设置默认值确保提交时有值
  },
  {
    field: 'period',
    show: false, // 隐藏字段
    defaultValue: 'DEFAULT', // 设置默认值确保提交时有值
  },
  {
    field: 'isHistory',
    show: false, // 隐藏字段
    defaultValue: false, // 设置默认值确保提交时有值
  },
  {
    field: 'name',
    show: false, // 隐藏字段
    defaultValue: '', // 设置默认值确保提交时有值
  },
]
